<?php
/**
 * 系統名稱: Lotto 系統
 * 檔案說明: 專案管理-修改
 * $Author$
 * $Id$
 *
 */
if (!defined("SQLUtility_lib_include")){
    define("SQLUtility_lib_include", 1);
	include_once(__Modules_Path."/LogRecord.lib.php");

/**
 * 將資料陣列新增至指定 Table
 * @param	arrData 資料陣列  index_?x：Table 的欄位名稱，value：陣列值
 *							?x：n -> 數值，x -> 文字，a -> 系統日期，b -> 系統時間
 * @param	strTable Table 名稱
 * @return	成功傳回 true，否 false
*/
	function InsertSQL($arrData, $strTable){
		global $_ConnMaster;
		$strAC = "資料表名稱：".$strTable."\n";
		$strAC .= "以下為所新增內容：\n\n";

		while(list($k, $v) = each($arrData)){
			$n = substr( $k, 0, strlen($k) - 2);
			$m = substr( $k, -1, 1);
			switch($m){
				case "n":			//數字
					if(strlen($v) > 0){
						$strFName .= $n.",";	//欄位名稱
						$v = trim($v);
						$strFValue .= $v.",";
						$strAC .= $n."：".$v."\n";
					}
					break;

				case "x":			//文字
					if(!is_array($v)){
						$v = trim($v);
						$strFValue .= "'".$v."',";
						$strAC .= $n."：".$v."\n";
					}else{
						$strFValue .= "'".join(",",$v)."',";
						$strAC .= $n."：".join(",",$v)."\n";
					}
					$strFName .= $n.",";	//欄位名稱
					break;

				case "a":			//目前日期
					$strFValue .= "CURRENT_DATE(),";
					$strAC .= $n."：CURRENT_DATE()\n";
					$strFName .= $n.",";	//欄位名稱
					break;

				case "b":			//目前時間
					$strFValue .= "CURRENT_TIME(),";
					$strAC .= $n."：CURRENT_TIME()\n";
					$strFName .= $n.",";	//欄位名稱
					break;
			}
		}

		$strSQL = "insert into ".$strTable."(".substr($strFName, 0, strlen($strFName) - 1).") values(".substr($strFValue, 0, strlen($strFValue) - 1).")";
		if(!PMA_mysql_query($strSQL, $_ConnMaster)){
			$GLOBALS["errormessage"] = "Add Data Error!!";
			$GLOBALS["errorhidden"] = "\nError: ".PMA_mysql_error($_ConnMaster)."\nSQL:".$strSQL."\nLine:".__LINE__."\nPage:".__FILE__;
			AddData_Log("","新增".$strTable."資料失敗", $strAC.PMA_mysql_error($_ConnMaster)."\nSQL: ".$strSQL);
			return false;
		}else{
			$intInsertID = mysql_insert_id($_ConnMaster);
			$strAC .= "ID：".$intInsertID;
			AddData_Log("","新增".$strTable."資料", $strAC);
			return $intInsertID;
		}
	}


/**
 * 一某筆資料序號，將資料陣列修改該筆資料
 * @param	intID：資料序號
 * @param	arrData 資料陣列  index_?x：Table 的欄位名稱，value：陣列值
 *						?x：n -> 數值，x -> 文字，a -> 系統日期，b -> 系統時間
 * @param	strTable Table 名稱
 * @return	成功傳回 true，否 false
*/
	function UpdateSQL ($intID, $arrData, $strTable){
		global $_ConnMaster;
		$strAC = "資料表名稱：".$strTable."\n";
		$strAC .= "以下為所修改內容：\n\n";
		$strAC .= "ID：".$intID."\n";
		while(list($k, $v) = each($arrData)){
			$n = substr( $k, 0, strlen($k) - 2);
			$m = substr( $k, -1, 1);
			switch($m){
				case "n":			//數字
					$v = trim($v);
					if(strlen($v) == 0) $v = 0;
					$strFValue .= $n."=".$v.",";
					break;

				case "x":			//文字
					if(!is_array($v)){
						$v = trim($v);
						$strFValue .= $n."="."'".$v."',";
					}else{
						$strFValue .= $n."="."'".join(",",$v)."',";
					}
					break;

				case "a":			//目前日期
					$strFValue .= $n."=CURRENT_DATE(),";
					break;

				case "b":			//目前時間
					$strFValue .= $n."=CURRENT_TIME(),";
					break;
			}	//switch($m)
		}	//while(list($k, $v) = each($arrData))

		$strSQL = "update ".$strTable." set ".substr($strFValue, 0, strlen($strFValue) - 1)." where ID = ".$intID;
//print $strSQL;
		if(!PMA_mysql_query($strSQL, $_ConnMaster)){
			$GLOBALS["errormessage"] = "Update Data Error!!";
			$GLOBALS["errorhidden"] = "\nError: ".PMA_mysql_error($_ConnMaster)."\nLine:".__LINE__."\nPage:".__FILE__;
			AddData_Log("","修改".$strTable."資料失敗", $strAC.PMA_mysql_error($_ConnMaster)."\nSQL: ".$strSQL);
			return false;
		}else{
			$strFValue = str_replace("='", "：", $strFValue);
			$strAC .= str_replace("',", "\n", $strFValue);
			AddData_Log("","修改資料", $strAC);
			return true;
		}
	}


/**
 * 一某筆資料序號，刪除該筆資料
 * @param	intID：資料序號
 * @param	strTable：Table 名稱
 * @return	成功傳回 true，否 false
 */
	function DeleteSQL ( $intID, $strTable){
		global $_ConnMaster;
		DeleteData_Log("", $strTable, $intID);
		$strSQL = "delete from ".$strTable." where ID = ".$intID;
		if(!PMA_mysql_query($strSQL, $_ConnMaster)){
			$GLOBALS["errormessage"] = "Delete Data Error!!";
			$GLOBALS["errorhidden"] = "\nError: ".PMA_mysql_errno($_ConnMaster)."\nLine:".__LINE__."\nPage:".__FILE__;
			return false;
		}else{
			return true;
		}
	}


/**
 * 組合查詢用 SQL 指令
 * @param	arrData：資料陣列  index_?x：Table 的欄位名稱，value：陣列值
 *							?x：n -> 數值，x -> 文字，a -> 系統日期，b -> 系統時間
 * @param	strTable：Table 名稱
 * @return	成功傳回 SQL 指令
*/
	function SelectSQL ( $arrData, $strTable){
		$strSQL = "select * from ".$strTable;
		$arrSQL = array();
		if(is_array($arrData)){
			while(list($k,$v) = each($arrData)){
				$n = substr( $k, 0, strlen($k) - 2);
				$m = substr( $k, -1, 1);
				if(is_array($v)){
					switch($m){
						case "n":					//數字
							$v[0] = trim($v[0]);
							$v[1] = trim($v[1]);
							if(strlen($v[0]) == 0 && strlen($v[1]) > 0){
								$arrSQL[] = $n." = ".$v[1];
							}else if(strlen($v[0]) > 0 && strlen($v[1]) == 0){
								$arrSQL[] = $n." = ".$v[0];
							}else if(strlen($v[0]) > 0 && strlen($v[1]) > 0){
								if($v[1] == $v[0]){
									$arrSQL[] = $n." = ".$v[0];
								}else{
									$arrSQL[] = $n." between ".$v[0]." and ".$v[1];
								}
							}
							break;

						case "x":					//字串
							$v[0] = trim($v[0]);
							$v[1] = trim($v[1]);
							if(strlen($v[0]) == 0 && strlen($v[1]) > 0){
								$arrSQL[] = $n." like '%".$v[1]."%'";
							}else if(strlen($v[0]) > 0 && strlen($v[1]) == 0){
								$arrSQL[] = $n." like '%".$v[0]."%'";
							}else if(strlen($v[0]) > 0 && strlen($v[1]) > 0){
								if($v[1] == $v[0]){
									$arrSQL[] = $n." = '".$v[0]."'";
								}else{
									$arrSQL[] = $n." between '".$v[0]."' and '".$v[1]."'";
								}
							}
							break;
					}	//switch($m)

				}else{	//if(is_array($v))
					$v = trim($v);
					switch($m){
						case "n":					//數字
							if(strlen($v) > 0)$arrSQL[] = $n." = '".$v."'";
							break;

						case "x":					//字串
							if(strlen($v) > 0)$arrSQL[] = $n." like '%".$v."%'";
							break;

						case "i":					//集合
							if(strlen($v) > 0)$arrSQL[] = $n." in (".$v.")";
							break;

						case "a":					//目前日期
							$arrSQL[] = $n." = CURRENT_DATE()";
							break;

						case "b":					//目前時間
							$arrSQL[] = $n." = CURRENT_TIME()";
							break;
					}	//switch($m)
				}
			}
		}
		return $strSQL.((sizeof($arrSQL) > 0)?" where ".join(" and ", $arrSQL):"");
	}

//-------------------------------------------------------//
//SQLUtility_lib End
}
?>